const redis=require('redis')
const {REDIS_CONF}=require('../conf/db')

//创建客户端
const redisClient=redis.createClient(REDIS_CONF.port,REDIS_CONF.host)//端口,主机
redisClient.on('error',err=>{//监控error，有错误时抛出
    console.error(err)
})

function set(key,val){
    if(typeof val ==='object'){
        val=JSON.stringify(val)
    }
    redisClient.set(key,val,redis.print)
}

function get(key){
    const promise=new Promise((resolve,reject)=>{
        redisClient.get(key,(err,val)=>{
            if(err){
                reject(err)
                return
            }
            // console.log('val:',val)
            if(val==null){
                resolve(null)
                return
            }
            //因为值有可能是一个对象(前面转为了字符串),现在尝试转回对象,有可能出错,所有弄一个try..catch()..,不成功的话还是返回val
            try{
                JSON.parse(val)
            }catch(ex){
                resolve(val)
            }
            
        })
    })
    return promise
}

module.exports={
    set,
    get
}